package com.ltg.urban.domain.project.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ltg.framework.util.http.PageInfo;
import com.ltg.framework.util.http.Result;
import com.ltg.urban.domain.project.data.request.*;
import com.ltg.urban.domain.project.data.response.ProjectDetailResp;
import com.ltg.urban.domain.project.data.response.ProjectPageResp;
import com.ltg.urban.domain.project.entity.UrbanProject;
import com.ltg.urban.domain.project.entity.UrbanProjectUser;
import com.ltg.urban.domain.sys.data.response.UserInfo;

import java.util.List;

/**
 * <p> ClassName: UrbanProjectMapper </p>
 * <p> Package: com.ltg.urban.domain.project.service </p>
 * <p> Description: </p>
 * <p></p>
 *
 * @Author: LTG
 * @Create: 2023/2/22 - 21:49
 * @Version: v1.0
 */
public interface UrbanProjectService extends IService<UrbanProject> {
    Result<UrbanProject> apply(ApplyProjectReq req);

    PageInfo<ProjectPageResp> pageList(UserInfo userInfo, Page<ProjectPageResp> page, Integer status, Integer approveResult,String projectName);

    Result<UrbanProject> modify(Long projectId, ApplyProjectReq req);


    Result<Void> modifyUser(Long projectId, List<ProjectPosition> member);

    Result<UrbanProjectUser> addProjectUser(Long projectId, ProjectPosition member);

    Result<Void> deleteProjectUser(Long projectId, Long userId);


    Result<ProjectDetailResp> projectDetail(Long projectId);

    Result<UrbanProject> projectChangeStatus(Long projectId, ModifyProjectStatusReq req);


    Result<UrbanProject> projectApprove(Long projectId, ApproveProjectReq req);


    Result<UrbanProject> anewApply(Long projectId, AnewApplyReq req);
}
